#pragma once

#include <string>
#include <sstream>

#include <fstream>
#include <windows.h>
using namespace std;



//To-remove
#define ENGINE_NAME "NERVUS"

#define TEST_PIC "F:\\Games\\Programming\\Project\\Media\\34672_cards.jpg"
#define BMP_PIC "F:\\Games\\Programming\\Project\\Media\\405651.bmp"

#define DEFAULT_TEXTURE "F:\\Games\\Programming\\Project\\My code\\Nervus\\neuron.png"






#ifdef _DEBUG


#define NERVUS_ERROR(x)  MessageBox(NULL, x, "NERVUS Error", MB_OK | MB_ICONEXCLAMATION);


namespace Nervus {
	namespace Core {
		class Chrono;
	}

	class Debug {
	private:
	public:
		static stringstream* info;
		static Core::Chrono* chrono;
	};
}
#define NERVUS_INFO(x)  Debug::info->str(""); Debug::info->clear(); *Debug::info << x; MessageBox(NULL, Debug::info->str().c_str(), "NERVUS Info", MB_OK | MB_ICONEXCLAMATION);



namespace Nervus {
	class Logger {
	private:
		static Logger* mLogger;

		Core::Chrono* mChrono;
	public:
		ofstream mLogFile;
		string mFileName;


		Logger();

		static Logger* get();
	};
}


#define Log(x) 		Logger::get()->mLogFile.open(Logger::get()->mFileName, ios::app); \
Logger::get()->mLogFile << x << endl;	\
Logger::get()->mLogFile.close();
#else
#define Log(x)
#endif